{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Text Normalization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "taj mahal is one of the beautiful monuments. it is one of the wonders of the world. it was built by shah jahan in 1631 in memory of his third beloved wife mumtaj mahal.\n"
     ]
    }
   ],
   "source": [
    "# Input text\n",
    "paragraph=\"\"\"Taj Mahal is one of the beautiful monuments. It is one of the wonders of the world. It was built by Shah Jahan in 1631 in memory of his third beloved wife Mumtaj Mahal.\"\"\"\n",
    "\n",
    "# Converting paragraph in lowercase \n",
    "print(paragraph.lower()) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Tokenization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[nltk_data] Downloading package punkt to /home/avinash/nltk_data...\n",
      "[nltk_data]   Package punkt is already up-to-date!\n",
      "[nltk_data] Downloading package stopwords to\n",
      "[nltk_data]     /home/avinash/nltk_data...\n",
      "[nltk_data]   Package stopwords is already up-to-date!\n",
      "[nltk_data] Downloading package wordnet to /home/avinash/nltk_data...\n",
      "[nltk_data]   Package wordnet is already up-to-date!\n",
      "[nltk_data] Downloading package averaged_perceptron_tagger to\n",
      "[nltk_data]     /home/avinash/nltk_data...\n",
      "[nltk_data]   Package averaged_perceptron_tagger is already up-to-\n",
      "[nltk_data]       date!\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Loading NLTK module\n",
    "import nltk\n",
    "\n",
    "# downloading punkt\n",
    "nltk.download('punkt')\n",
    "\n",
    "# downloading stopwords\n",
    "nltk.download('stopwords')\n",
    "\n",
    "# downloading wordnet\n",
    "nltk.download('wordnet')\n",
    "\n",
    "# downloading average_perception_tagger \n",
    "nltk.download('averaged_perceptron_tagger')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['Taj Mahal is one of the beautiful monuments.', 'It is one of the wonders of the world.', 'It was built by Shah Jahan in 1631 in memory of his third beloved wife Mumtaj Mahal.']\n"
     ]
    }
   ],
   "source": [
    "# Sentence Tokenization\n",
    "from nltk.tokenize import sent_tokenize\n",
    " \n",
    "paragraph=\"\"\"Taj Mahal is one of the beautiful monuments. It is one of the wonders of the world. It was built by Shah Jahan in 1631 in memory of his third beloved wife Mumtaj Mahal.\"\"\"\n",
    " \n",
    "tokenized_sentences=sent_tokenize(paragraph)\n",
    "print(tokenized_sentences)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['Taj Mahal is one of the beautiful monuments.', 'It is one of the wonders of the world.', 'It was built by Shah Jahan in 1631 in memory of his third beloved wife Mumtaj Mahal.']\n"
     ]
    }
   ],
   "source": [
    "# Import spacy\n",
    "import spacy\n",
    "\n",
    "# Loading english language model \n",
    "nlp = spacy.load(\"en\")\n",
    " \n",
    "# Build the nlp pipe using 'sentencizer'\n",
    "sent_pipe = nlp.create_pipe('sentencizer')\n",
    " \n",
    "# Append the sentencizer pipe to the nlp pipeline\n",
    "nlp.add_pipe(sent_pipe)\n",
    " \n",
    "paragraph = \"\"\"Taj Mahal is one of the beautiful monuments. It is one of the wonders of the world. It was built by Shah Jahan in 1631 in memory of his third beloved wife Mumtaj Mahal.\"\"\"\n",
    " \n",
    "# Create nlp Object to handle linguistic annotations in a documents.\n",
    "nlp_doc = nlp(paragraph)\n",
    " \n",
    "# Generate list of tokenized sentence\n",
    "tokenized_sentences = []\n",
    "for sentence in nlp_doc.sents:\n",
    "    tokenized_sentences.append(sentence.text)\n",
    "print(tokenized_sentences)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['Taj', 'Mahal', 'is', 'one', 'of', 'the', 'beautiful', 'monuments', '.', 'It', 'is', 'one', 'of', 'the', 'wonders', 'of', 'the', 'world', '.', 'It', 'was', 'built', 'by', 'Shah', 'Jahan', 'in', '1631', 'in', 'memory', 'of', 'his', 'third', 'beloved', 'wife', 'Mumtaj', 'Mahal', '.']\n"
     ]
    }
   ],
   "source": [
    "# Import nltk word_tokenize method\n",
    "from nltk.tokenize import word_tokenize\n",
    " \n",
    "# Split paragraph into words\n",
    "tokenized_words=word_tokenize(paragraph)\n",
    "print(tokenized_words)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['Taj', 'Mahal', 'is', 'one', 'of', 'the', 'beautiful', 'monuments', '.', 'It', 'is', 'one', 'of', 'the', 'wonders', 'of', 'the', 'world', '.', 'It', 'was', 'built', 'by', 'Shah', 'Jahan', 'in', '1631', 'in', 'memory', 'of', 'his', 'third', 'beloved', 'wife', 'Mumtaj', 'Mahal', '.']\n"
     ]
    }
   ],
   "source": [
    "# Import spacy\n",
    "import spacy\n",
    "\n",
    "# Loading english language model \n",
    "nlp = spacy.load(\"en\")\n",
    " \n",
    "paragraph = \"\"\"Taj Mahal is one of the beautiful monuments. It is one of the wonders of the world. It was built by Shah Jahan in 1631 in memory of his third beloved wife Mumtaj Mahal.\"\"\"\n",
    " \n",
    "# Create nlp Object to handle linguistic annotations in a documents.\n",
    "my_doc = nlp(paragraph)\n",
    " \n",
    "# tokenize paragraph into words\n",
    "tokenized_words = []\n",
    "for token in my_doc:\n",
    "    tokenized_words.append(token.text)\n",
    "print(tokenized_words)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('of', 4), ('the', 3), ('.', 3), ('Mahal', 2), ('is', 2)]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Import frequency distribution  \n",
    "from nltk.probability import FreqDist\n",
    " \n",
    "# Find frequency distribution of paragraph\n",
    "fdist = FreqDist(tokenized_words)\n",
    " \n",
    "# Check top 5 common words\n",
    "fdist.most_common(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    " \n",
    "# Plot Frequency Distribution\n",
    "fdist.plot(20, cumulative=False)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Stopwords"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tokenized Word List: ['Taj', 'Mahal', 'is', 'one', 'of', 'the', 'beautiful', 'monuments', '.', 'It', 'is', 'one', 'of', 'the', 'wonders', 'of', 'the', 'world', '.', 'It', 'was', 'built', 'by', 'Shah', 'Jahan', 'in', '1631', 'in', 'memory', 'of', 'his', 'third', 'beloved', 'wife', 'Mumtaj', 'Mahal', '.']\n",
      "Filtered Word List: ['Taj', 'Mahal', 'one', 'beautiful', 'monuments', '.', 'It', 'one', 'wonders', 'world', '.', 'It', 'built', 'Shah', 'Jahan', '1631', 'memory', 'third', 'beloved', 'wife', 'Mumtaj', 'Mahal', '.']\n"
     ]
    }
   ],
   "source": [
    "# import the nltk stopwords \n",
    "from nltk.corpus import stopwords\n",
    " \n",
    "# Load english stopwords list\n",
    "stopwords_set=set(stopwords.words(\"english\"))\n",
    " \n",
    "# Removing stopwords from text\n",
    "filtered_word_list=[]\n",
    "for word in tokenized_words:\n",
    "    # filter stopwords\n",
    "    if word not in stopwords_set:\n",
    "        filtered_word_list.append(word)\n",
    "\n",
    "# print tokenized words\n",
    "print(\"Tokenized Word List:\", tokenized_words)\n",
    "\n",
    "# print filtered words\n",
    "print(\"Filtered Word List:\", filtered_word_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Filtered Word List: [Taj, Mahal, beautiful, monuments, ., wonders, world, ., built, Shah, Jahan, 1631, memory, beloved, wife, Mumtaj, Mahal, .]\n"
     ]
    }
   ],
   "source": [
    "# Import spacy \n",
    "import spacy\n",
    " \n",
    "# Loading english language model \n",
    "nlp = spacy.load(\"en\")\n",
    " \n",
    "# text paragraph\n",
    "paragraph = \"\"\"Taj Mahal is one of the beautiful monuments. It is one of the wonders of the world. It was built by Shah Jahan in 1631 in memory of his third beloved wife Mumtaj Mahal.\"\"\"\n",
    "\n",
    "# Create nlp Object to handle linguistic annotations in a documents.\n",
    "my_doc = nlp(paragraph)\n",
    " \n",
    "# Removing stopwords from text\n",
    "filtered_token_list=[]\n",
    "for token in my_doc:\n",
    "    # filter stopwords \n",
    "    if token.is_stop==False:\n",
    "        filtered_token_list.append(token)\n",
    "        \n",
    "print(\"Filtered Word List:\",filtered_token_list)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Stemming and Lemmatization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Lemmatized Sample Word: cry\n",
      "Stemmed Sample Word: cri\n"
     ]
    }
   ],
   "source": [
    "# Import Lemmatizer\n",
    "from nltk.stem.wordnet import WordNetLemmatizer\n",
    "\n",
    "# Create lemmatizer object\n",
    "lemmatizer = WordNetLemmatizer()\n",
    " \n",
    "# Import Porter Stemmer\n",
    "from nltk.stem.porter import PorterStemmer\n",
    "\n",
    "# Create stemmer object\n",
    "stemmer = PorterStemmer()\n",
    "\n",
    "# take a sample word\n",
    "sample_word = \"crying\"\n",
    "\n",
    "print(\"Lemmatized Sample Word:\", lemmatizer.lemmatize(sample_word,\"v\"))\n",
    "\n",
    "print(\"Stemmed Sample Word:\", stemmer.stem(sample_word))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original Word:  cry\n",
      "Lemmatized Word:  cry\n",
      "Original Word:  cries\n",
      "Lemmatized Word:  cry\n",
      "Original Word:  crying\n",
      "Lemmatized Word:  cry\n"
     ]
    }
   ],
   "source": [
    "# Import english language model\n",
    "import spacy\n",
    " \n",
    "# Loading english language model \n",
    "nlp = spacy.load(\"en\")\n",
    " \n",
    "# Create nlp Object to handle linguistic annotations in documents.\n",
    "words = nlp(\"cry cries crying\")\n",
    " \n",
    "# Find lemmatized word\n",
    "for w in words:\n",
    "    print('Original Word: ', w.text)\n",
    "    print('Lemmatized Word: ',w.lemma_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## PoS Tagging"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[('Taj', 'NNP'), ('Mahal', 'NNP'), ('is', 'VBZ'), ('one', 'CD'), ('of', 'IN'), ('the', 'DT'), ('beautiful', 'JJ'), ('monument', 'NN'), ('.', '.')]\n"
     ]
    }
   ],
   "source": [
    "# import Word Tokenizer and Pos Tagger\n",
    "from nltk.tokenize import word_tokenize\n",
    "from nltk import pos_tag\n",
    " \n",
    "# Sample sentence\n",
    "sentence = \"Taj Mahal is one of the beautiful monument.\"\n",
    " \n",
    "# Tokenize the sentence\n",
    "sent_tokens = word_tokenize(sentence)\n",
    " \n",
    "# Create PoS tags\n",
    "sent_pos = pos_tag(sent_tokens)\n",
    " \n",
    "# Print tokens with PoS\n",
    "print(sent_pos)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Taj PROPN\n",
      "Mahal PROPN\n",
      "is AUX\n",
      "one NUM\n",
      "of ADP\n",
      "the DET\n",
      "beautiful ADJ\n",
      "monument NOUN\n",
      ". PUNCT\n"
     ]
    }
   ],
   "source": [
    "# Import english language model\n",
    "import spacy\n",
    " \n",
    "# Loading small english language model \n",
    "nlp = spacy.load(\"en_core_web_sm\")\n",
    "\n",
    "# Create nlp Object to handle linguistic annotations in a documents.\n",
    "sentence = nlp(u\"Taj Mahal is one of the beautiful monument.\")\n",
    " \n",
    "for token in sentence:\n",
    "    print(token.text, token.pos_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Entity Recognition"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[('Taj Mahal', 'PERSON'), ('Shah Jahan', 'PERSON'), ('1631', 'DATE'), ('third', 'ORDINAL'), ('Mumtaj Mahal', 'PERSON')]\n"
     ]
    }
   ],
   "source": [
    "# Import spacy\n",
    "import spacy\n",
    " \n",
    "# Load English model for tokenizer, tagger, parser, and NER \n",
    "nlp = spacy.load('en') \n",
    " \n",
    "# Sample paragraph\n",
    "paragraph = \"\"\"Taj Mahal is one of the beautiful monuments. It is one of the wonders of the world. It was built by Shah Jahan in 1631 in memory of his third beloved wife Mumtaj Mahal.\"\"\"\n",
    " \n",
    "# Create nlp Object to handle linguistic annotations in documents.\n",
    "docs=nlp(paragraph)\n",
    " \n",
    "entities=[(i.text, i.label_) for i in docs.ents]\n",
    "print(entities)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Dependency Parsing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<span class=\"tex2jax_ignore\"><div class=\"entities\" style=\"line-height: 2.5; direction: ltr\">\n",
       "<mark class=\"entity\" style=\"background: #aa9cfc; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;\">\n",
       "    Taj Mahal\n",
       "    <span style=\"font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; text-transform: uppercase; vertical-align: middle; margin-left: 0.5rem\">PERSON</span>\n",
       "</mark>\n",
       " is one of the beautiful monuments. It is one of the wonders of the world. It was built by \n",
       "<mark class=\"entity\" style=\"background: #aa9cfc; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;\">\n",
       "    Shah Jahan\n",
       "    <span style=\"font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; text-transform: uppercase; vertical-align: middle; margin-left: 0.5rem\">PERSON</span>\n",
       "</mark>\n",
       " in \n",
       "<mark class=\"entity\" style=\"background: #bfe1d9; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;\">\n",
       "    1631\n",
       "    <span style=\"font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; text-transform: uppercase; vertical-align: middle; margin-left: 0.5rem\">DATE</span>\n",
       "</mark>\n",
       " in memory of his \n",
       "<mark class=\"entity\" style=\"background: #e4e7d2; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;\">\n",
       "    third\n",
       "    <span style=\"font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; text-transform: uppercase; vertical-align: middle; margin-left: 0.5rem\">ORDINAL</span>\n",
       "</mark>\n",
       " beloved wife \n",
       "<mark class=\"entity\" style=\"background: #aa9cfc; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;\">\n",
       "    Mumtaj Mahal\n",
       "    <span style=\"font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; text-transform: uppercase; vertical-align: middle; margin-left: 0.5rem\">PERSON</span>\n",
       "</mark>\n",
       ".</div></span>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Import display for visualizing the Entities \n",
    "from spacy import displacy\n",
    " \n",
    "# Visualize the entities using render function\n",
    "displacy.render(docs, style = \"ent\",jupyter = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<span class=\"tex2jax_ignore\"><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:lang=\"en\" id=\"a688da6376f54b87b1f31d29bd55704f-0\" class=\"displacy\" width=\"1250\" height=\"362.0\" direction=\"ltr\" style=\"max-width: none; height: 362.0px; color: #000000; background: #ffffff; font-family: Arial; direction: ltr\">\n",
       "<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"272.0\">\n",
       "    <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"50\">Taj</tspan>\n",
       "    <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"50\">PROPN</tspan>\n",
       "</text>\n",
       "\n",
       "<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"272.0\">\n",
       "    <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"200\">Mahal</tspan>\n",
       "    <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"200\">PROPN</tspan>\n",
       "</text>\n",
       "\n",
       "<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"272.0\">\n",
       "    <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"350\">is</tspan>\n",
       "    <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"350\">AUX</tspan>\n",
       "</text>\n",
       "\n",
       "<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"272.0\">\n",
       "    <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"500\">one</tspan>\n",
       "    <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"500\">NUM</tspan>\n",
       "</text>\n",
       "\n",
       "<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"272.0\">\n",
       "    <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"650\">of</tspan>\n",
       "    <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"650\">ADP</tspan>\n",
       "</text>\n",
       "\n",
       "<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"272.0\">\n",
       "    <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"800\">the</tspan>\n",
       "    <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"800\">DET</tspan>\n",
       "</text>\n",
       "\n",
       "<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"272.0\">\n",
       "    <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"950\">beautiful</tspan>\n",
       "    <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"950\">ADJ</tspan>\n",
       "</text>\n",
       "\n",
       "<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"272.0\">\n",
       "    <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"1100\">monument.</tspan>\n",
       "    <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"1100\">NOUN</tspan>\n",
       "</text>\n",
       "\n",
       "<g class=\"displacy-arrow\">\n",
       "    <path class=\"displacy-arc\" id=\"arrow-a688da6376f54b87b1f31d29bd55704f-0-0\" stroke-width=\"2px\" d=\"M70,227.0 C70,152.0 190.0,152.0 190.0,227.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
       "    <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
       "        <textPath xlink:href=\"#arrow-a688da6376f54b87b1f31d29bd55704f-0-0\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">compound</textPath>\n",
       "    </text>\n",
       "    <path class=\"displacy-arrowhead\" d=\"M70,229.0 L62,217.0 78,217.0\" fill=\"currentColor\"/>\n",
       "</g>\n",
       "\n",
       "<g class=\"displacy-arrow\">\n",
       "    <path class=\"displacy-arc\" id=\"arrow-a688da6376f54b87b1f31d29bd55704f-0-1\" stroke-width=\"2px\" d=\"M220,227.0 C220,152.0 340.0,152.0 340.0,227.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
       "    <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
       "        <textPath xlink:href=\"#arrow-a688da6376f54b87b1f31d29bd55704f-0-1\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">nsubj</textPath>\n",
       "    </text>\n",
       "    <path class=\"displacy-arrowhead\" d=\"M220,229.0 L212,217.0 228,217.0\" fill=\"currentColor\"/>\n",
       "</g>\n",
       "\n",
       "<g class=\"displacy-arrow\">\n",
       "    <path class=\"displacy-arc\" id=\"arrow-a688da6376f54b87b1f31d29bd55704f-0-2\" stroke-width=\"2px\" d=\"M370,227.0 C370,152.0 490.0,152.0 490.0,227.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
       "    <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
       "        <textPath xlink:href=\"#arrow-a688da6376f54b87b1f31d29bd55704f-0-2\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">attr</textPath>\n",
       "    </text>\n",
       "    <path class=\"displacy-arrowhead\" d=\"M490.0,229.0 L498.0,217.0 482.0,217.0\" fill=\"currentColor\"/>\n",
       "</g>\n",
       "\n",
       "<g class=\"displacy-arrow\">\n",
       "    <path class=\"displacy-arc\" id=\"arrow-a688da6376f54b87b1f31d29bd55704f-0-3\" stroke-width=\"2px\" d=\"M520,227.0 C520,152.0 640.0,152.0 640.0,227.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
       "    <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
       "        <textPath xlink:href=\"#arrow-a688da6376f54b87b1f31d29bd55704f-0-3\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">prep</textPath>\n",
       "    </text>\n",
       "    <path class=\"displacy-arrowhead\" d=\"M640.0,229.0 L648.0,217.0 632.0,217.0\" fill=\"currentColor\"/>\n",
       "</g>\n",
       "\n",
       "<g class=\"displacy-arrow\">\n",
       "    <path class=\"displacy-arc\" id=\"arrow-a688da6376f54b87b1f31d29bd55704f-0-4\" stroke-width=\"2px\" d=\"M820,227.0 C820,77.0 1095.0,77.0 1095.0,227.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
       "    <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
       "        <textPath xlink:href=\"#arrow-a688da6376f54b87b1f31d29bd55704f-0-4\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">det</textPath>\n",
       "    </text>\n",
       "    <path class=\"displacy-arrowhead\" d=\"M820,229.0 L812,217.0 828,217.0\" fill=\"currentColor\"/>\n",
       "</g>\n",
       "\n",
       "<g class=\"displacy-arrow\">\n",
       "    <path class=\"displacy-arc\" id=\"arrow-a688da6376f54b87b1f31d29bd55704f-0-5\" stroke-width=\"2px\" d=\"M970,227.0 C970,152.0 1090.0,152.0 1090.0,227.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
       "    <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
       "        <textPath xlink:href=\"#arrow-a688da6376f54b87b1f31d29bd55704f-0-5\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">amod</textPath>\n",
       "    </text>\n",
       "    <path class=\"displacy-arrowhead\" d=\"M970,229.0 L962,217.0 978,217.0\" fill=\"currentColor\"/>\n",
       "</g>\n",
       "\n",
       "<g class=\"displacy-arrow\">\n",
       "    <path class=\"displacy-arc\" id=\"arrow-a688da6376f54b87b1f31d29bd55704f-0-6\" stroke-width=\"2px\" d=\"M670,227.0 C670,2.0 1100.0,2.0 1100.0,227.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
       "    <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
       "        <textPath xlink:href=\"#arrow-a688da6376f54b87b1f31d29bd55704f-0-6\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">pobj</textPath>\n",
       "    </text>\n",
       "    <path class=\"displacy-arrowhead\" d=\"M1100.0,229.0 L1108.0,217.0 1092.0,217.0\" fill=\"currentColor\"/>\n",
       "</g>\n",
       "</svg></span>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Import spacy\n",
    "import spacy\n",
    " \n",
    "# Load English model for tokenizer, tagger, parser, and NER \n",
    "nlp = spacy.load('en') \n",
    " \n",
    "# Sample sentence\n",
    "sentence=\"Taj Mahal is one of the beautiful monument.\"\n",
    "\n",
    "# Create nlp Object to handle linguistic annotations in a documents.\n",
    "docs=nlp(sentence)\n",
    " \n",
    "# Visualize the  using render function\n",
    "displacy.render(docs, style=\"dep\", jupyter= True, options={'distance': 150})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting wordcloud\n",
      "  Downloading wordcloud-1.8.1-cp38-cp38-manylinux1_x86_64.whl (371 kB)\n",
      "\u001b[K     |████████████████████████████████| 371 kB 745 kB/s eta 0:00:01\n",
      "\u001b[?25hRequirement already satisfied: matplotlib in /home/avinash/anaconda3/lib/python3.8/site-packages (from wordcloud) (3.2.2)\n",
      "Requirement already satisfied: numpy>=1.6.1 in /home/avinash/anaconda3/lib/python3.8/site-packages (from wordcloud) (1.18.5)\n",
      "Requirement already satisfied: pillow in /home/avinash/anaconda3/lib/python3.8/site-packages (from wordcloud) (7.2.0)\n",
      "Requirement already satisfied: kiwisolver>=1.0.1 in /home/avinash/anaconda3/lib/python3.8/site-packages (from matplotlib->wordcloud) (1.2.0)\n",
      "Requirement already satisfied: cycler>=0.10 in /home/avinash/anaconda3/lib/python3.8/site-packages (from matplotlib->wordcloud) (0.10.0)\n",
      "Requirement already satisfied: python-dateutil>=2.1 in /home/avinash/anaconda3/lib/python3.8/site-packages (from matplotlib->wordcloud) (2.8.1)\n",
      "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /home/avinash/anaconda3/lib/python3.8/site-packages (from matplotlib->wordcloud) (2.4.7)\n",
      "Requirement already satisfied: six in /home/avinash/anaconda3/lib/python3.8/site-packages (from cycler>=0.10->matplotlib->wordcloud) (1.15.0)\n",
      "Installing collected packages: wordcloud\n",
      "Successfully installed wordcloud-1.8.1\n"
     ]
    }
   ],
   "source": [
    "!pip install wordcloud"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## WordCloud"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# importing all necessary modules \n",
    "from wordcloud import WordCloud\n",
    "from wordcloud import STOPWORDS\n",
    "import matplotlib.pyplot as plt\n",
    " \n",
    "stopword_list = set(STOPWORDS) \n",
    " \n",
    "paragraph=\"\"\"Taj Mahal is one of the beautiful monuments. It is one of the wonders of the world. It was built by Shah Jahan in 1631 in memory of his third beloved wife Mumtaj Mahal.\"\"\"\n",
    " \n",
    "word_cloud = WordCloud(width = 550, height = 550, \n",
    "                       background_color ='white', \n",
    "                       stopwords = stopword_list, \n",
    "                       min_font_size = 10).generate(paragraph) \n",
    "  \n",
    "# Visualize the WordCloud Plot\n",
    "\n",
    "# Set wordcloud figure size\n",
    "plt.figure(figsize = (8, 6)) \n",
    "# Show image\n",
    "plt.imshow(word_cloud) \n",
    "# Remove Axis\n",
    "plt.axis(\"off\")  \n",
    "# show plot\n",
    "plt.show() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Sentiment Analysis using Text Classification"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Classification using Bag of Words"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Load the Dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rating</th>\n",
       "      <th>date</th>\n",
       "      <th>variation</th>\n",
       "      <th>verified_reviews</th>\n",
       "      <th>feedback</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5</td>\n",
       "      <td>31-Jul-18</td>\n",
       "      <td>Charcoal Fabric</td>\n",
       "      <td>Love my Echo!</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5</td>\n",
       "      <td>31-Jul-18</td>\n",
       "      <td>Charcoal Fabric</td>\n",
       "      <td>Loved it!</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4</td>\n",
       "      <td>31-Jul-18</td>\n",
       "      <td>Walnut Finish</td>\n",
       "      <td>Sometimes while playing a game, you can answer...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5</td>\n",
       "      <td>31-Jul-18</td>\n",
       "      <td>Charcoal Fabric</td>\n",
       "      <td>I have had a lot of fun with this thing. My 4 ...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>31-Jul-18</td>\n",
       "      <td>Charcoal Fabric</td>\n",
       "      <td>Music</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   rating       date         variation  \\\n",
       "0       5  31-Jul-18  Charcoal Fabric    \n",
       "1       5  31-Jul-18  Charcoal Fabric    \n",
       "2       4  31-Jul-18    Walnut Finish    \n",
       "3       5  31-Jul-18  Charcoal Fabric    \n",
       "4       5  31-Jul-18  Charcoal Fabric    \n",
       "\n",
       "                                    verified_reviews  feedback  \n",
       "0                                      Love my Echo!         1  \n",
       "1                                          Loved it!         1  \n",
       "2  Sometimes while playing a game, you can answer...         1  \n",
       "3  I have had a lot of fun with this thing. My 4 ...         1  \n",
       "4                                              Music         1  "
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Import libraries\n",
    "import pandas as pd\n",
    "\n",
    "# read the dataset\n",
    "df=pd.read_csv('amazon_alexa.tsv', sep='\\t')\n",
    "    \n",
    "# Show top 5-records\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Explore the dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Import seaborn\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    " \n",
    "# Count plot\n",
    "sns.countplot(x='feedback', data=df)\n",
    " \n",
    "# Set X-axis and Y-axis labels\n",
    "plt.xlabel('Sentiment Score')\n",
    "plt.ylabel('Number of Records')\n",
    " \n",
    "# Show the plot using show() function\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Feature Generation using CountVectorizer "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import CountVectorizer and RegexTokenizer\n",
    "from nltk.tokenize import RegexpTokenizer\n",
    "from sklearn.feature_extraction.text import CountVectorizer\n",
    "\n",
    " \n",
    "# Create Regex tokenizer for removing special symbols and numeric values \n",
    "regex_tokenizer = RegexpTokenizer(r'[a-zA-Z]+')\n",
    " \n",
    "# Initialize CountVectorizer object\n",
    "count_vectorizer = CountVectorizer(lowercase=True, \n",
    "                     stop_words='english', \n",
    "                     ngram_range = (1,1), \n",
    "                     tokenizer = regex_tokenizer.tokenize)\n",
    " \n",
    "# Fit and transform the dataset\n",
    "count_vectors = count_vectorizer.fit_transform(df['verified_reviews'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Split train and test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import train_test_split\n",
    "from sklearn.model_selection import train_test_split\n",
    " \n",
    "# Partition data into training and testing set \n",
    "from sklearn.model_selection import train_test_split\n",
    "feature_train, feature_test, target_train, target_test = train_test_split(\n",
    "    count_vectors, df['feedback'], test_size=0.3, random_state=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Classification Model Building using Logistic Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import logistic regression scikit-learn model\n",
    "from sklearn.linear_model import LogisticRegression\n",
    " \n",
    "# instantiate the model\n",
    "logreg = LogisticRegression(solver='lbfgs')\n",
    " \n",
    "# fit the model with data\n",
    "logreg.fit(feature_train,target_train)\n",
    " \n",
    "# Forecast the target variable for given test dataset\n",
    "predictions = logreg.predict(feature_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Evaluate the Classification Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Logistic Regression Model Accuracy: 0.9428571428571428\n",
      "Logistic Regression Model Precision: 0.952433628318584\n",
      "Logistic Regression Model Recall: 0.9873853211009175\n",
      "Logistic Regression Model F1-Score: 0.9695945945945945\n"
     ]
    }
   ],
   "source": [
    "# Import metrics module for performance evaluation\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.metrics import precision_score\n",
    "from sklearn.metrics import recall_score\n",
    "from sklearn.metrics import f1_score\n",
    "\n",
    "# Assess model performance using accuracy measure\n",
    "print(\"Logistic Regression Model Accuracy:\",accuracy_score(target_test, predictions))\n",
    "# Calculate model precision\n",
    "print(\"Logistic Regression Model Precision:\",precision_score(target_test, predictions))\n",
    "# Calculate model recall\n",
    "print(\"Logistic Regression Model Recall:\",recall_score(target_test, predictions))\n",
    "# Calculate model f1 score\n",
    "print(\"Logistic Regression Model F1-Score:\",f1_score(target_test, predictions))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Classification using TF-IDF"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import TfidfVectorizer and RegexTokenizer\n",
    "from nltk.tokenize import RegexpTokenizer\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer\n",
    "\n",
    "# Create Regex tokenizer for removing special symbols and numeric values \n",
    "regex_tokenizer = RegexpTokenizer(r'[a-zA-Z]+')\n",
    " \n",
    "# Initialize TfidfVectorizer object\n",
    "tfidf = TfidfVectorizer(lowercase=True,stop_words='english',ngram_range = (1,1),tokenizer = regex_tokenizer.tokenize)\n",
    " \n",
    "# Fit and transform the dataset\n",
    "text_tfidf= tfidf.fit_transform(df['verified_reviews'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import train_test_split\n",
    "from sklearn.model_selection import train_test_split\n",
    " \n",
    "# Partition data into training and testing set \n",
    "from sklearn.model_selection import train_test_split\n",
    "feature_train, feature_test, target_train, target_test = train_test_split(\n",
    "    text_tfidf, df['feedback'], test_size=0.3, random_state=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import logistic regression scikit-learn model\n",
    "from sklearn.linear_model import LogisticRegression\n",
    " \n",
    "# instantiate the model\n",
    "logreg = LogisticRegression(solver='lbfgs')\n",
    " \n",
    "# fit the model with data\n",
    "logreg.fit(feature_train,target_train)\n",
    " \n",
    "# Forecast the target variable for given test dataset\n",
    "predictions = logreg.predict(feature_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Logistic Regression Model Accuracy: 0.9238095238095239\n",
      "Logistic Regression Model Precision: 0.923728813559322\n",
      "Logistic Regression Model Recall: 1.0\n",
      "Logistic Regression Model F1-Score: 0.960352422907489\n"
     ]
    }
   ],
   "source": [
    "# Import metrics module for performance evaluation\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.metrics import precision_score\n",
    "from sklearn.metrics import recall_score\n",
    "from sklearn.metrics import f1_score\n",
    "\n",
    "# Assess model performance using accuracy measure\n",
    "print(\"Logistic Regression Model Accuracy:\",accuracy_score(target_test, predictions))\n",
    "# Calculate model precision\n",
    "print(\"Logistic Regression Model Precision:\",precision_score(target_test, predictions))\n",
    "# Calculate model recall\n",
    "print(\"Logistic Regression Model Recall:\",recall_score(target_test, predictions))\n",
    "# Calculate model f1 score\n",
    "print(\"Logistic Regression Model F1-Score:\",f1_score(target_test, predictions))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Text Similarity"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.724494176985974\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "<ipython-input-32-f157deaa344d>:12: UserWarning: [W007] The model you're using has no word vectors loaded, so the result of the Doc.similarity method will be based on the tagger, parser and NER, which may not give useful similarity judgements. This may happen if you're using one of the small models, e.g. `en_core_web_sm`, which don't ship with word vectors and only use context-sensitive tensors. You can always add your own word vectors, or use one of the larger models instead if available.\n",
      "  print(doc1.similarity(doc2))\n"
     ]
    }
   ],
   "source": [
    "# Import spacy\n",
    "import spacy\n",
    " \n",
    "# Load English model for tokenizer, tagger, parser, and NER \n",
    "nlp = spacy.load('en') \n",
    " \n",
    "# Create documents\n",
    "doc1 = nlp(u'I love pets.')\n",
    "doc2 = nlp(u'I hate pets')\n",
    " \n",
    "# Find similarity\n",
    "print(doc1.similarity(doc2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def jaccard_similarity(sent1, sent2):\n",
    "    \"\"\"Find text similarity using jaccard similarity\"\"\"\n",
    "    \n",
    "    # Tokenize sentences\n",
    "    token1 = set(sent1.split())\n",
    "    token2 = set(sent2.split())\n",
    "     \n",
    "    # intersection between tokens of two sentences    \n",
    "    intersection_tokens = token1.intersection(token2)\n",
    "    \n",
    "    # Union between tokens of two sentences\n",
    "    union_tokens=token1.union(token2)\n",
    "    \n",
    "    # Cosine Similarity\n",
    "    sim_= float(len(intersection_tokens) / len(union_tokens))\n",
    "    return sim_\n",
    "\n",
    "# Call function\n",
    "jaccard_similarity('I love pets.','I hate pets.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1.         0.33609693]\n",
      " [0.33609693 1.        ]]\n"
     ]
    }
   ],
   "source": [
    "# Let's import text feature extraction TfidfVectorizer\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer\n",
    " \n",
    "docs=['I love pets.','I hate pets.']\n",
    " \n",
    "# Initialize TfidfVectorizer object\n",
    "tfidf= TfidfVectorizer()\n",
    " \n",
    "# Fit and transform the given data\n",
    "tfidf_vector = tfidf.fit_transform(docs)\n",
    " \n",
    "# Import cosine_similarity metrics\n",
    "from sklearn.metrics.pairwise import cosine_similarity\n",
    " \n",
    "# compute similarity using cosine similarity\n",
    "cos_sim=cosine_similarity(tfidf_vector, tfidf_vector)\n",
    "print(cos_sim)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
